<?php
//------------------------------------------------------------ Contraintes d'accès de la page

	// on vérifie que cette page est appelée à partir de l'index et que l'utilisateur est un administrateur
	if(isset($_SESSION) && $GLOBALS['USER']['admin']){

?>
<?php
//------------------------------------------------------------ Définition des variables d'affichage

	// variable indiquant la page sélectionnée
	if(isset($_GET['l']) && numericInt($_GET['l'])){ 
		$page = $_GET['l'];
	}else{
		$page = 1;
	}
		
	// variable indiquant l'ordre selon lequel on tri la liste
	if(isset($_GET['o'])){
		switch($_GET['o']){
		case 0: $ordre = 0; $ordreBDD = "ASC"; break;
		case 1: $ordre = 1; $ordreBDD = "DESC"; break;
		default: $ordre = 0; $ordreBDD = "ASC"; break;
		}
	}else{
		$ordre = 0;
		$ordreBDD = "ASC";
	}
	
	// variable indiquant la colonne selon laquelle on tri la liste
	if(isset($_GET['t'])){
		switch($_GET['t']){
		case 1: $tri = 1; $triBDD = "nom ".$ordreBDD; break;
		case 2: $tri = 2; $triBDD = "prenom ".$ordreBDD; break;
		case 3: $tri = 3; $triBDD = "login ".$ordreBDD; break;
		case 4: $tri = 4; $triBDD = "valide ".$ordreBDD; break;
		case 5: $tri = 5; $triBDD = "niveau ".$ordreBDD; break;
		default: $tri = 1; $triBDD = "nom ".$ordreBDD; break;
		}
	}else{
		$tri = 1;
		$triBDD = "nom ".$ordreBDD;
	}
	
	// Traitement des options
	$optionsSet = false;
	$optionsURL = "";
	
	if(isset($_POST['opt_seulAdmin']) || isset($_GET['opt_seulAdmin'])){
		$optionsURL .= "&amp;opt_seulAdmin=1";
		$optionsSet = true;
	}
	if(isset($_POST['opt_seulAttente']) || isset($_GET['opt_seulAttente'])){
		$optionsURL .= "&amp;opt_seulAttente=1";
		$optionsSet = true;
	}
	if((isset($_POST['opt_seulNiveau']) || isset($_GET['opt_seulNiveau'])) && (isset($_POST['opt_nivType']) || isset($_GET['opt_nivType'])) && (isset($_POST['opt_nivVal']) || isset($_GET['opt_nivVal']))){
		if(isset($_POST['opt_nivType'])){
			$opt_nivType = $_POST['opt_nivType'];
		}else{
			$opt_nivType = $_GET['opt_nivType'];
		}
		if(isset($_POST['opt_nivVal'])){
			$opt_nivVal = $_POST['opt_nivVal'];
		}else{
			$opt_nivVal = $_GET['opt_nivVal'];
		}
		if($opt_nivType >= 1 && $opt_nivType <= 3 && $opt_nivVal >= 0 && $opt_nivVal <= 5){
			$optionsURL .= "&amp;opt_seulNiveau=1&amp;opt_nivType=".$opt_nivType."&amp;opt_nivVal=".$opt_nivVal."";
			$optionsSet = true;
		}
	}
	
?>
<?php
//------------------------------------------------------------ Récupération de la liste des utilisateurs

	// On compte le nombre total de utilisateurs enregistrés
	$nb_total_utilisateurs = 0;
	
	$query_compte_utilisateurs = "SELECT COUNT(*) ";
	$query_compte_utilisateurs .= "FROM infos_utilisateur u, personne p ";
	$query_compte_utilisateurs .= "WHERE p.CODEPERSONNE = u.CODEPERSONNE ";
	// Si l'utilisateur a saisi des options
	if($optionsSet){
		if(isset($_POST['opt_seulAdmin']) || isset($_GET['opt_seulAdmin'])){
			$query_compte_utilisateurs .= "AND u.ESTADMINISTRATEUR = 1 ";
		}
		if(isset($_POST['opt_seulAttente']) || isset($_GET['opt_seulAttente'])){
			$query_compte_utilisateurs .= "AND u.VALIDEUTILISATEUR IS NULL ";
		}
		if(isset($opt_nivType) && isset($opt_nivVal)){
			switch($opt_nivType){
			case 1: $query_compte_utilisateurs .= "AND u.NIVEAUUTILISATEUR >= ".$opt_nivVal." "; break;
			case 2: $query_compte_utilisateurs .= "AND u.NIVEAUUTILISATEUR <= ".$opt_nivVal." "; break;
			case 3: $query_compte_utilisateurs .= "AND u.NIVEAUUTILISATEUR = ".$opt_nivVal." "; break;
			}
		}
	}
	
	$result_compte_utilisateurs = mysql_query($query_compte_utilisateurs, $connexion) or logError("COMPTE UTILISATEURS-".$query_compte_utilisateurs."-".mysql_error());
	
	$tab_compte_utilisateurs = mysql_fetch_row($result_compte_utilisateurs);
	
	$nb_total_utilisateurs = $tab_compte_utilisateurs[0];
	
	mysql_free_result($result_compte_utilisateurs);
	
	// On compte le nombre total de utilisateurs qui ne sont pas validés (le champ VALIDEUTILISATEUR vaut NULL)
	$nb_total_utilisateurs_invalides = 0;
	
	$query_compte_utilisateurs_invalides = "SELECT COUNT(*) ";
	$query_compte_utilisateurs_invalides .= "FROM infos_utilisateur u, personne p ";
	$query_compte_utilisateurs_invalides .= "WHERE p.CODEPERSONNE = u.CODEPERSONNE ";
	$query_compte_utilisateurs_invalides .= "AND u.VALIDEUTILISATEUR IS NULL";
	
	$result_compte_utilisateurs_invalides = mysql_query($query_compte_utilisateurs_invalides, $connexion) or logError("COMPTE UTILISATEURS INVALIDES-".$query_compte_utilisateurs_invalides."-".mysql_error());
	
	$tab_compte_utilisateurs_invalides = mysql_fetch_row($result_compte_utilisateurs_invalides);
	
	$nb_total_utilisateurs_invalides = $tab_compte_utilisateurs_invalides[0];
	
	mysql_free_result($result_compte_utilisateurs_invalides);
	
	// récupération des informations des utilisateurs
	$query_recuperation_liste_utilisateurs = "SELECT u.CODEINFOSUTILISATEUR AS id, u.LOGIN AS login, p.NOMPERSONNE AS nom, p.PRENOMPERSONNE AS prenom, u.VALIDEUTILISATEUR AS valide, u.ESTADMINISTRATEUR AS admin, u.NIVEAUUTILISATEUR as niveau ";
	$query_recuperation_liste_utilisateurs .= "FROM infos_utilisateur u, personne p ";
	$query_recuperation_liste_utilisateurs .= "WHERE p.CODEPERSONNE = u.CODEPERSONNE ";
	// Si l'utilisateur a saisi des options
	if($optionsSet){
		if(isset($_POST['opt_seulAdmin']) || isset($_GET['opt_seulAdmin'])){
			$query_recuperation_liste_utilisateurs .= "AND u.ESTADMINISTRATEUR = 1 ";
		}
		if(isset($_POST['opt_seulAttente']) || isset($_GET['opt_seulAttente'])){
			$query_recuperation_liste_utilisateurs .= "AND u.VALIDEUTILISATEUR IS NULL ";
		}
		if(isset($opt_nivType) && isset($opt_nivVal)){
			switch($opt_nivType){
			case 1: $query_recuperation_liste_utilisateurs .= "AND u.NIVEAUUTILISATEUR >= ".$opt_nivVal." "; break;
			case 2: $query_recuperation_liste_utilisateurs .= "AND u.NIVEAUUTILISATEUR <= ".$opt_nivVal." "; break;
			case 3: $query_recuperation_liste_utilisateurs .= "AND u.NIVEAUUTILISATEUR = ".$opt_nivVal." "; break;
			}
		}
	}
	$query_recuperation_liste_utilisateurs .= "ORDER BY ".$triBDD." ";
	$query_recuperation_liste_utilisateurs .= "LIMIT ".(($page-1)*$GLOBALS['CONFIG']['nbParPage']).", ".($GLOBALS['CONFIG']['nbParPage'])." ";
	
	$result_recuperation_liste_utilisateurs = mysql_query($query_recuperation_liste_utilisateurs, $connexion) or logError("RECUPERATION LISTE UTILISATEURS-".$query_recuperation_liste_utilisateurs."-".mysql_error());
	
	$lst_utilisateurs = array(); // on créé un tableau qui contient la liste des utilisateurs ainsi que les informations de chacun
	$nb_utilisateurs = 0;
	while($tab_recuperation_liste_utilisateurs = mysql_fetch_assoc($result_recuperation_liste_utilisateurs)){
	
		$lst_utilisateurs[$nb_utilisateurs]['id'] = $tab_recuperation_liste_utilisateurs['id'];
		$lst_utilisateurs[$nb_utilisateurs]['nom'] = $tab_recuperation_liste_utilisateurs['nom'];
		$lst_utilisateurs[$nb_utilisateurs]['prenom'] = $tab_recuperation_liste_utilisateurs['prenom'];
		$lst_utilisateurs[$nb_utilisateurs]['login'] = $tab_recuperation_liste_utilisateurs['login'];
		if(is_null($tab_recuperation_liste_utilisateurs['valide'])){
			$lst_utilisateurs[$nb_utilisateurs]['valide'] = null;
		}else{
			$lst_utilisateurs[$nb_utilisateurs]['valide'] = (bool)$tab_recuperation_liste_utilisateurs['valide'];
		}
		$lst_utilisateurs[$nb_utilisateurs]['admin'] = (bool)$tab_recuperation_liste_utilisateurs['admin'];
		$lst_utilisateurs[$nb_utilisateurs]['niveau'] = $tab_recuperation_liste_utilisateurs['niveau'];
		
		$nb_utilisateurs++;
		
	}

	mysql_free_result($result_recuperation_liste_utilisateurs);

?>
<a name="liste"></a>
<h2>Liste des utilisateurs</h2>

<?php

   if($nb_total_utilisateurs_invalides > 0){
		afficherStatut($nb_total_utilisateurs_invalides." botanite(s) en attente de validation", 2);
	}
   
   $tabth = array ('Nom','Prénom','Login','Valide','Niv. accès');
   
   for($i=0;$i<$nb_utilisateurs;$i++){
      
      $lst_droits = "<ul>";
      switch ($lst_utilisateurs[$i]['niveau']){
         case 0 : $lst_droits = "<i>aucun droit d'utilisation</i>"; break;
         case 5 : $lst_droits .= "<li>supprimer</li>";
         case 4 : $lst_droits .= "<li>modifier</li>";
         case 3 : $lst_droits .= "<li>ajouter</li>";
         case 2 : $lst_droits .= "<li>consulter</li>";
         case 1 : $lst_droits .= "<li>se connecter</li>";
         default: $lst_droits .= "</ul>";
      }
   
    
		$nom = ($lst_utilisateurs[$i]['admin']?"<span style=\"font-weight: bold; color: #FF0000;\">":"").htmlentities(mb_strtoupper($lst_utilisateurs[$i]['nom']), ENT_NOQUOTES, "UTF-8")."</span>";
		$prenom = ($lst_utilisateurs[$i]['admin']?"<span style=\"font-weight: bold; color: #FF0000;\">":"").htmlentities(capitalise($lst_utilisateurs[$i]['prenom']), ENT_NOQUOTES, "UTF-8")."</span>";
		$login = ($lst_utilisateurs[$i]['admin']?"<span style=\"font-weight: bold; color: #FF0000;\">":"").htmlentities($lst_utilisateurs[$i]['login'], ENT_NOQUOTES, "UTF-8")."</span>";
      
      if(is_null($lst_utilisateurs[$i]['valide'])){
			$valide = "<img src=\"images/inconnu.png\" alt=\"en attente\"/>";
		}else{
			$valide = "<img src=\"images/".boolToText($lst_utilisateurs[$i]['valide']).".png\" alt=\"".boolToText($lst_utilisateurs[$i]['valide'])."\"/>";
		}
   
      
      
      
   
      $tab_result[$i] = array (  htmlentities($lst_utilisateurs[$i]['id'], ENT_NOQUOTES, "UTF-8"),
                                 $nom, $prenom, $login, $valide,
                                 $lst_utilisateurs[$i]['niveau']." <sup>(<a href=\"#\" onclick=\"openInfobulle('Droits pour ce niveau :', '".str_replace("'", "\'", $lst_droits)."', event); return false;\">aide</a>)</sup>" );
   
   }

   
   displayListe("utilisateur",720,$nb_total_utilisateurs,$optionsURL,'',1,'');



?>


<div class="options" style="margin-left: auto; margin-right: auto; width: 720px">
	<span id="indOF_options"><?php if($optionsSet) echo "▼"; else echo "►"; ?></span> <a href="#liste" onclick="ouvrirFermerTXT('lst_options', 1, 'indOF_options', '▼', '►'); return false;">Options</a>
	<div id="lst_options" style="display: <?php if($optionsSet) echo "block"; else echo "none"; ?>;">
		<form id="frm_options" method="post" action="index.php?p=gestion/utilisateur_gere&amp;l=<?php echo $page; ?>&amp;t=<?php echo $tri; ?>&amp;o=<?php echo $ordre; ?>#liste">
			<input type="checkbox" name="opt_seulAdmin" onchange="document.getElementById('frm_options').submit();" <?php if(isset($_POST['opt_seulAdmin']) || isset($_GET['opt_seulAdmin'])) echo "checked=\"checked\""; ?> /> <label>Seulement les administrateurs</label><br />
			<input type="checkbox" name="opt_seulAttente" onchange="document.getElementById('frm_options').submit();" <?php if(isset($_POST['opt_seulAttente']) || isset($_GET['opt_seulAttente'])) echo "checked=\"checked\""; ?> /> <label>Seulement les validations en attente</label><br />
			<input id="opt_seulNiveau" type="checkbox" name="opt_seulNiveau" <?php if(isset($_POST['opt_seulNiveau']) || isset($_GET['opt_seulNiveau'])) echo "checked=\"checked\""; ?> /> <label>Niveau d'accès :</label>
			<select name="opt_nivType" onchange="document.getElementById('opt_seulNiveau').checked=true;">
				<option value="1" <?php if(isset($opt_nivType) && $opt_nivType == 1) echo "selected=\"selected\""; ?>>≥</option>
				<option value="2" <?php if(isset($opt_nivType) && $opt_nivType == 2) echo "selected=\"selected\""; ?>>≤</option>
				<option value="3" <?php if(isset($opt_nivType) && $opt_nivType == 3) echo "selected=\"selected\""; ?>>=</option>
			</select>
			<select name="opt_nivVal" style="min-width: 0px;" onchange="document.getElementById('opt_seulNiveau').checked=true;">
				<option value="0" <?php if(isset($opt_nivVal) && $opt_nivVal == 0) echo "selected=\"selected\""; ?>>0</option>
				<option value="1" <?php if(isset($opt_nivVal) && $opt_nivVal == 1) echo "selected=\"selected\""; ?>>1</option>
				<option value="2" <?php if(isset($opt_nivVal) && $opt_nivVal == 2) echo "selected=\"selected\""; ?>>2</option>
				<option value="3" <?php if(isset($opt_nivVal) && $opt_nivVal == 3) echo "selected=\"selected\""; ?>>3</option>
				<option value="4" <?php if(isset($opt_nivVal) && $opt_nivVal == 4) echo "selected=\"selected\""; ?>>4</option>
				<option value="5" <?php if(isset($opt_nivVal) && $opt_nivVal == 5) echo "selected=\"selected\""; ?>>5</option>
			</select>
			<input type="submit" value="ok" />
		</form>
	</div>
</div>
<br />
<div class="information">
	<div class="titre">Légende</div>
	<p>
		<span style="font-weight: bold; color: #FF0000;">En rouge</span> : administrateurs<br />
	</p>
	<p>
		<img src="images/oui.png" alt="oui" /> : oui &nbsp;&nbsp;-&nbsp;&nbsp; <img src="images/non.png" alt="non" /> : non &nbsp;&nbsp;-&nbsp;&nbsp; <img src="images/inconnu.png" alt="en attente" /> : en attente (validation)
	</p>
</div>
<div class="information">
	<div class="titre">Information</div>
	<h4>Valide :</h4>
	<p>Un utilisateur valide a été validé par un administrateur. S'il n'est pas validé, il ne peut pas se connecter.</p>
	<h4>Niveau d'accès :</h4>
	<p>Le niveau d'accès attribué à un utilisateur lui donne des droits d'utilisations. Cliquez sur "aide" pour connaître les droits correspondant au niveau.</p>
	<h4>Actions bloquées :</h4>
	<p>Vous ne pouvez pas éditer ou supprimer votre propre compte. Pour le modifier utilisez la page <a href="index.php?p=modifierProfil">Mon profil</a>.</p>
	<h4>Suppression :</h4>
	<p>Si vous supprimez un utilisateur, seul son compte utilisateur est supprimé. Les informations sur la personne sont conservées et un nouveau compte utilisateur pourra lui être créé ultérieurement.</p>
</div>
<?php
//------------------------------------------------------------ Accès refusé à la page

	}else{
	
		if(isset($_SESSION)){
			include("pages/401.htm");
		}
	
	}

?>